package ${domain}.module.wsys.mgr;

import ${domain}.frame.auth.Token;
import ${domain}.module.wsys.req.ResCreateRequest;
import ${domain}.module.wsys.req.ResDeleteRequest;
import ${domain}.module.wsys.req.ResFindRequest;
import ${domain}.module.wsys.req.ResLoadRequest;
import ${domain}.module.wsys.req.ResTreeRequest;
import ${domain}.module.wsys.req.ResUpdateRequest;
import ${domain}.module.wsys.rsp.ResCreateResponse;
import ${domain}.module.wsys.rsp.ResDeleteResponse;
import ${domain}.module.wsys.rsp.ResFindResponse;
import ${domain}.module.wsys.rsp.ResLoadResponse;
import ${domain}.module.wsys.rsp.ResTreeResponse;
import ${domain}.module.wsys.rsp.ResUpdateResponse;

/**
 * 资源
 *
 * @author wangbing
 * @version 0.0.1
 * @since 2017-01-01
 */
public interface ResManager {

    /**
     * 插入
     *
     * @param request 请求对象
     * @param token   令牌
     * @return
     */
    ResCreateResponse create(ResCreateRequest request, Token token);

    /**
     * 逻辑删除
     *
     * @param request 请求对象
     * @param token   令牌
     * @return
     */
    ResDeleteResponse delete(ResDeleteRequest request, Token token);

    /**
     * 更新
     *
     * @param request 请求对象
     * @param token   令牌
     * @return
     */
    ResUpdateResponse update(ResUpdateRequest request, Token token);

    /**
     * 查询
     *
     * @param request 请求对象
     * @param token   令牌
     * @return
     */
    ResFindResponse find(ResFindRequest request, Token token);

    /**
     * 加载
     *
     * @param request 请求对象
     * @param token   令牌
     * @return
     */
    ResLoadResponse load(ResLoadRequest request, Token token);

    /**
     * 获得资源树
     *
     * @param request 请求对象
     * @param token   令牌
     * @return
     */
    ResTreeResponse tree(ResTreeRequest request, Token token);

    /**
     * 确保存在资源
     *
     * @param res   资源
     * @param token 令牌
     */
    void saveRes(String res, Token token);
}
